/**   
*
* @创建人：Liuyong   
* @创建时间：2013-10-31 下午04:01:20   
*    
*/ 
package com.crmsys.auth_framework.auth.dao.impl;

import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.stereotype.Repository;

import com.crmsys.auth_framework.auth.dao.IUserInfoDao;
import com.crmsys.auth_framework.auth.model.CRole;
import com.crmsys.auth_framework.auth.model.CUser;
import com.crmsys.common.base.dao.impl.BaseDaoHiberImpl;

/**   
 *
 * @描述：   
 * @创建人：Liuyong   
 * @创建时间：2013-10-31 下午04:01:20   
 * @修改人：Liuyong   
 * @修改时间：2013-10-31 下午04:01:20   
 * @修改备注：   
 * @version 1.0
 *    
 */
@Repository
public class UserInfoDaoImpl extends BaseDaoHiberImpl implements IUserInfoDao {
	/**
	 * 
	*@param userName
	*@return
	* @描述：  根据用户名获取用户信息 
	* @创建人：Liuyong   
	* @创建时间：2013-11-5 下午09:23:27   
	* @修改人：Liuyong   
	* @修改时间：2013-11-5 下午09:23:27   
	* @修改备注：   
	* @version 1.0
	*
	 */
	public List<CUser> getUserByName(final String userName,final String password){
		String hql = "from CUser where logonid=:logonid and password=:password";
		Map params = new HashMap();
		params.put("logonid", userName);
		params.put("password", password);
		return (List<CUser>)this.findByHqlWithParams(hql, params);
     }
	/**
     * 
    *@param id
    *@return
    * @描述：   根据用户id去检查该用户是否已被分配角色 
    * @创建人：Liuyong   
    * @创建时间：2013-11-7 上午09:31:31   
    * @修改人：Liuyong   
    * @修改时间：2013-11-7 上午09:31:31   
    * @修改备注：   
    * @version 1.0
    *
     */
    public boolean getUserRoleIsExist(String id){
    	final String hql = " select count(*) from CUser cu ,CUsergroup cug,CGrouprole cgr where cu.id=cug.userid and cu.id=:id and cug.groupid=cgr.groupid";
    	Map params = new HashMap();
    	params.put("id", Long.valueOf(id));
    	int count = this.getRowCountByHqlWithParams(hql, params);
    	boolean isExist = false;
    	if(count>0){
    		isExist = true;//绑定了角色
    	}
    	return isExist;
    }
	/**   
	*
	* @描述：   根据用户ID查询角色列表
	* @创建人：Liuyong   
	* @创建时间：2013-11-11 下午11:45:06   
	* @修改人：Liuyong   
	* @修改时间：2013-11-11 下午11:45:06   
	* @修改备注：   
	* @version 1.0
	*    
	*/ 
	public List getUserRole(String id) {
		final String hql = " select cr.id,cr.name from CUser cu ,CUsergroup cug,CGrouprole cgr,CRole cr "
			   +" where cu.id=cug.userid and cu.id=:id and cug.groupid=cgr.groupid and cgr.roleid=cr.id";
    	Map params = new HashMap();
    	params.put("id", Long.valueOf(id));
    	List list  = this.findByHqlWithParams(hql, params);
		return list;
	}
	/**   
	*
	* @描述：   根据角色id查找资源
	* @创建人：Liuyong   
	* @创建时间：2013-11-13 上午09:49:16   
	* @修改人：Liuyong   
	* @修改时间：2013-11-13 上午09:49:16   
	* @修改备注：   
	* @version 1.0
	*    
	*/ 
	public List getResourceByRoleId(String roleid) {
        final String hql = "select cr.id,cs.name,cs.parentId,cs.link,cs.icon,cs.enname,cs.id" 
        	+" from CRoleauth cr,CResource cs"
        	+" where cr.resourceid = cs.id and cr.roleid=:roleid order by cs.orderid asc";
        Map params = new HashMap();
    	params.put("roleid", Long.valueOf(roleid));
    	List list  = this.findByHqlWithParams(hql, params);
		return list;
	}
	 /**
     * 
    *@param raid
    *@return
    * @描述：根据raid取出对应的actions
    * @创建人：Liuyong   
    * @创建时间：2013-11-15 下午09:37:23   
    * @修改人：Liuyong   
    * @修改时间：2013-11-15 下午09:37:23   
    * @修改备注：   
    * @version 1.0
    *
     */
    public List getActionsByRaid(String raid){
    	final String hql = "select cr.actions from CRoleauth cr where cr.id=:id";
    	Map params = new HashMap();
    	params.put("id", Long.valueOf(raid));
    	List list = this.findByHqlWithParams(hql, params);
    	return list;
    }
}
